坚持
  • 微信
当前位置:首页 > PYTHON >

控制语句

作者:管理员 时间:2026-06-06 阅读数: 194人阅读

一、程序三大结构

程序全部逻辑由顺序、选择、循环三种结构组成:

  1. 顺序:自上而下依次执行

  2. 选择(分支):条件成立执行对应代码,如果…则…

  3. 循环:条件成立重复执行代码,如果满足则反复执行

二、选择结构if分支

1. 条件真假规则

条件为FalseFalse、0、0.0、None、空容器(空字符串/列表/字典/元组/集合)、空range
其余所有数据均为Trueif条件内不能写赋值=`

2. 单分支 if

语法

if 条件:
    代码块 #缩进统一

示例

num = input("输入数字:")
if int(num) < 10:
    print("小于10的数:"+num)

3. 双分支 if…else

num = input("输入数字:")
if int(num) < 10:
    print(num)
else:
    print("数字太大")

三元运算符(简写双分支)

格式:真值 if 条件 else 假值

num = input("输入数字")
res = num if int(num)<10 else "数字太大"
print(res)

4. 多分支 if…elif…else

特点:分支从上往下依次判断,匹配即结束,不能随意调换顺序

#成绩分级
score = int(input("输入分数"))
if score < 60:
    grade = "不及格"
elif score < 80:
    grade = "及格"
elif score < 90:
    grade = "良好"
elif score <= 100:
    grade = "优"
print(f"分数{score},等级{grade}")

坐标判断象限

x = int(input("x:"))
y = int(input("y:"))
if x == 0 and y == 0:
    print("原点")
elif x == 0:
    print("y轴")
elif y == 0:
    print("x轴")
elif x>0 and y>0:
    print("第1象限")
elif x<0 and y>0:
    print("第二象限")
elif x<0 and y<0:
    print("第三象限")
else:
    print("第四象限")

5. if嵌套

缩进控制层级关系

score = int(input("输入分数"))
if 0<=score<=100:
    if score>=90:
        g = "A"
    elif score>=80:
        g = "B"
    elif score>=70:
        g = "C"
    elif score>=60:
        g = "D"
    else:
        g = "E"
else:
    g = "分数非法"
print(g)

三、循环结构

1. while循环

语法

while 条件:
    循环体

循环体内必须修改条件变量,否则死循环

#0~10遍历
num = 0
while num <=10:
    print(num)
    num +=1

#1~100求和
all_sum = 0
n = 0
while n<=100:
    all_sum +=n
    n +=1
print(all_sum)

2. for循环

适用:遍历可迭代对象(字符串、列表、元组、字典、集合、range、生成器)

for 变量 in 可迭代对象:
    循环体

range用法

range(start,end,step)左闭右开,start默认0,step默认1

#1~100求和、奇偶拆分
sum_all=sum_even=sum_odd=0
for num in range(101):
    sum_all += num
    if num%2 ==0:
        sum_even +=num
    else:
        sum_odd +=num
print(sum_all,sum_even,sum_odd)

#遍历字典
d = {"name":"gaoqi","age":18}
for k in d: #遍历键
    print(k)
for v in d.values(): #遍历值
    print(v)
for item in d.items(): #键值对
    print(item)

3. 循环嵌套

#九九乘法表
for m in range(1,10):
    for n in range(1,m+1):
        print(f"{m}*{n}={m*n}",end="\t")
    print()
#筛选薪资大于15000
tb = [{"name":"高小一","age":18,"salary":30000,"city":"北京"},
      {"name":"高小二","age":19,"salary":20000,"city":"上海"},
      {"name":"高小五","age":20,"salary":10000,"city":"深圳"}]
for info in tb:
    if info["salary"]>15000:
        print(info)

四、循环控制关键字 break / continue / else

  1. break:跳出当前所在整层循环

while True:
    s = input("输入字符,Q退出:")
    if s.upper()=="Q":
        break
    print(s)
  1. continue:终止本次循环,直接进入下一轮

#录入薪资,负数重输
count=0
total=0
sal_list=[]
while True:
    s = input("输入薪资,Q结束:")
    if s.upper()=="Q":
        break
    money = float(s)
    if money<0:
        print("无效,重新输入")
        continue
    count +=1
    total +=money
    sal_list.append(money)
print(count,sal_list,total,total/count)
  1. 循环else:循环没有被break打断才执行else代码

sum_s =0
salary = []
for i in range(4):
    s = input("输入薪资:")
    if s.upper()=="Q":
        break
    num = float(s)
    if num<0:
        continue
    salary.append(num)
    sum_s +=num
else:
    print("4人全部录入完成")
print(salary,sum_s/4)

五、循环代码优化

  1. 减少循环内部计算,嵌套循环计算提到外层

  2. 优先使用局部变量

  3. 字符串拼接用join(),少用+

  4. 列表增删尽量在尾部操作

六、zip并行迭代

多个序列同步遍历,以最短容器长度为准

names = ("高淇","高老二","高老三")
ages = (18,16,20)
jobs = ("老师","程序员","公务员")
for n,a,j in zip(names,ages,jobs):
    print(n,a,j)

七、四大推导式(快速生成序列)

1. 列表推导式 [表达式 for x in 迭代对象 if 条件]

a = [x*2 for x in range(1,20) if x%5==0]
# [10,20,30]

2. 字典推导式 {key:value for k,v in zip(keys,vals)}

citys = ["北京","上海","深圳","广州"]
d = {i*100:city for i,city in zip(range(1,5),citys)}

3. 集合推导式 {表达式 for x in 迭代对象 if 条件}

s = {x for x in range(1,100) if x%9==0}

4. 生成器推导式 (表达式 for x in 迭代对象)

生成器只能遍历一次,不直接生成元组

gen = (x for x in range(10))

八、实操代码汇总

#1.成绩评级
score = int(input("输入分数:"))
if score<60:
    print("不及格")
elif score<80:
    print("及格")
elif score<90:
    print("良好")
else:
    print("优")

#2.while 1~100求和
all_sum=odd=even=0
i=1
while i<=100:
    all_sum+=i
    if i%2==0:
        even+=i
    else:
        odd+=i
    i+=1
print(all_sum,odd,even)

#3.for 1~100求和
all_sum=odd=even=0
for i in range(1,101):
    all_sum+=i
    if i%2==0:
        even+=i
    else:
        odd+=i
print(all_sum,odd,even)

#4.海龟绘图-同心圆
import turtle
p = turtle.Pen()
radius = [x*10 for x in range(1,11)]
colors = ("red","green","yellow","black")
p.width(4)
for r,i in zip(radius,range(len(radius))):
    p.penup()
    p.goto(0,-r)
    p.pendown()
    p.color(colors[i%len(colors)])
    p.circle(r)
turtle.done()

#5.18*18棋盘
import turtle
w = 30
num =18
x_start = (-400,400)
y_start = (-400,400)
t = turtle.Pen()
t.speed(10)
#横线
for i in range(num+1):
    t.penup()
    t.goto(x_start[0],x_start[1]-w*i)
    t.pendown()
    t.goto(x_start[0]+w*num,x_start[1]-w*i)
#竖线
for i in range(num+1):
    t.penup()
    t.goto(y_start[0]+w*i,y_start[1])
    t.pendown()
    t.goto(y_start[0]+w*i,y_start[1]-w*num)
t.hideturtle()
turtle.done()


上一篇:

下一篇: